// 创建store

import Vue from "vue";
// 引入vuex
import Vuex,{ Store } from "vuex"
// 使用插件
Vue.use(Vuex)

// actions -- 响应组件操作状态
const actions = {
  // increment:function(conText,value) {
  //   conText.commit('INCREMENT',value)
  // },
  // decrement:function(conText,value) {
  //   conText.commit('DECREMENT',value)
  // },
  incrementAsync:function(conText,value) {
    setTimeout(()=>{
      conText.commit('INCREMENTASYNC',value)
    },1000)
  },
  incrementOdd:function(conText,value) {
    if (conText.state.sum % 2) {
      conText.commit('INCREMENTASYNC',value)
    }
  }
}
// mutations -- 处理组件操作
const mutations = {
  INCREMENT:function(state,value) {
    state.sum += value
  },
  DECREMENT:function(state,value) {
    state.sum -= value
  },
  INCREMENTODD:function(state,value) {
    state.sum += value
  },
  INCREMENTASYNC:function(state,value) {
    state.sum += value
  }
}
// state -- 存储数据
const state = {
  sum:0,
  name:'lisi',
}
const getters = {
  bigSum(state) {
    return state.sum>0?state.sum*(state.sum-1):state.sum
  }
}
// 暴露store
export default new Store({
  actions,
  mutations,
  state,
  getters
})